from matplotlib import pyplot as plt
import pywebio
import numpy as np
import pandas as pd
import draw_table.draw_table
import generate_file_name.generate_file_name


def generate_bar_chart(matches_c, matches_y,gdp):
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
    fig, ax = plt.subplots()
    years=[]
    for match in matches_y :
        years.append(gdp.columns[int(match)-1959])# 假设第一列是国家名称，后续列为年份和对应的GDP数据
    # 创建新的x轴坐标
    x_ticks = np.arange(len(years))
    x_ticks_labels = [year for i, year in enumerate(years)]
    plt.xticks(x_ticks, x_ticks_labels, rotation=45)
    # 创建一个空列表来存储所有选中的国家的数据
    all_selected_data = []
    print(matches_c[0])
    for country in matches_c:
        selected_data = gdp[gdp['Country'] == str(country)]
        selected_row=[]
        for match in matches_y:
            selected_row.append(int(match)-1959)
        gdp_values = selected_data.iloc[0, selected_row]
        gdp_values.interpolate(inplace=True)
        ax.bar(x_ticks, gdp_values, label=country, linewidth=2,alpha=0.5)
        gdp_values['Country'] = country
        all_selected_data.append(gdp_values)

    combined_data = pd.concat(all_selected_data, axis=1).T

    combined_data.reset_index(drop=True, inplace=True)
    # 输出合并后的DataFrame
    draw_table.draw_table.output_dataframe(combined_data)
    ax.legend()
    ax.set_xlabel('Year')
    ax.set_ylabel('GDP')
    ax.set_title(f'GDP for {matches_c}')
    file_random_tag='bar_char_'+generate_file_name.generate_file_name.generate_random_filename(16)
    tmp_file = './output_img/'+file_random_tag+'.png'
    print(tmp_file)
    plt.savefig(tmp_file)
    plt.close()
    pywebio.output.put_image(open(tmp_file, 'rb').read())
    #请输出美国2000年，2003年，1986年，2001年，1984年，2007年，1990年，1992年，1995年，1998年，1999年的gdp

